using System.Diagnostics.Contracts;
namespace Gltf
{
    public class Sampler
    {
        public static string TypeName = "Sampler";

        /**
         * @brief Known values for Magnification filter.
         */
        public struct MagFilter
        {
            public static int NEAREST = 9728;

            public static int LINEAR = 9729;
        };

        /**
         * @brief Known values for Minification filter.
         */
        public struct MinFilter
        {
            public static int NEAREST = 9728;

            public static int LINEAR = 9729;

            public static int NEAREST_MIPMAP_NEAREST = 9984;

            public static int LINEAR_MIPMAP_NEAREST = 9985;

            public static int NEAREST_MIPMAP_LINEAR = 9986;

            public static int LINEAR_MIPMAP_LINEAR = 9987;
        }

        /**
         * @brief Known values for S (U) wrapping mode.
         */
        public struct WrapS
        {
            public static int CLAMP_TO_EDGE = 33071;

            public static int MIRRORED_REPEAT = 33648;

            public static int REPEAT = 10497;
        };

        /**
         * @brief Known values for T (V) wrapping mode.
         */
      public  struct WrapT
        {
            public static int CLAMP_TO_EDGE = 33071;

            public static int MIRRORED_REPEAT = 33648;

            public static int REPEAT = 10497;
        };

        /**
         * @brief Magnification filter.
         *
         * Known values are defined in {@link MagFilter}.
         *
         */
        public int magFilter;

        /**
         * @brief Minification filter.
         *
         * Known values are defined in {@link MinFilter}.
         *
         */
        public int minFilter;

        /**
         * @brief S (U) wrapping mode.
         *
         * Known values are defined in {@link WrapS}.
         *
         *
         * All valid values correspond to WebGL enums.
         */
        public int wrapS = WrapS.REPEAT;

        /**
         * @brief T (V) wrapping mode.
         *
         * Known values are defined in {@link WrapT}.
         *
         */
        public int wrapT = WrapT.REPEAT;
    }
}